#该文件主要是用来收集人脸图片。

import cv2
    
    #视频来源，可以来自一段已存好的视频，也可以直接来自USB摄像头
cap = cv2.VideoCapture(0)

num = 0
        
while cap.isOpened():

    
    ret, frame = cap.read() #读取一帧数据


    gray = cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY)#将图片转化成灰度

    face_cascade = cv2.CascadeClassifier("haarcascade_eye.xml")
    face_cascade.load('C:/Users/LCG/Desktop/data/test/haarcascade_eye.xml')#一定要告诉编译器文件所在的具体位置
    '''此文件是opencv的haar人脸特征分类器'''
    faces = face_cascade.detectMultiScale(gray, 1.3, 5)

    if len(faces) > 0:
        for (x,y,w,h) in faces:
        
         #将当前帧保存为图片
         img_name = '%s/%d.jpg'%("C:/Users/LCG/Desktop/data/test/me", num)  #路径自己定义，但是首先要有这个文件夹
         image = frame[y - 10: y + h + 10, x - 10: x + w + 10]
         cv2.imwrite(img_name, image)                                
                                 
         num += 1                
         if num > 2000:   #如果超过指定最大保存数量退出循环
           break



         cv2.rectangle(frame,(x,y),(x+w,y+h),(0,0,255),2)

         #显示当前捕捉到了多少人脸图片
         font = cv2.FONT_HERSHEY_SIMPLEX
         #cv2.putText(frame,'num:%d'%(num),(x + 30,y + 30),font,1,(255,0,255),4)

    #超过指定最大保存数量结束程序
    if num > 2000 :break


                        
    #显示图像并等待10毫秒按键输入，输入‘q’退出程序
    cv2.imshow("capture", frame)
    if cv2.waitKey(10) & 0xFF == ord('q'):
      break   
    
    #释放摄像头并销毁所有窗口
cap.release()
cv2.destroyAllWindows() 
